package com.normalsys.live.base.redsession;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;

/**
 * Project Name: yuntai
 * File Name: RedissonManager
 * Package Name: com.normalsys.manage.base.redsession
 * Date: 2018/7/17  9:38
 * Copyright (c) 2018, tianyul All Rights Reserved.
 */
public class RedissonManager {
    private RedissonClient redissonClient;

    private Config config = new Config();

    public RedissonManager(String address, String password, int connectionPoolSize, int idleConnectionTimeout,
                           int connectTimeout, int timeout, int pingTimeout, int reconnectionTimeout) {

        config.useSingleServer().setAddress(address)
                .setPassword(password) // 设置密码
                .setConnectionPoolSize(connectionPoolSize) // 设置对于master节点的连接池中连接数最大为500
                .setIdleConnectionTimeout(idleConnectionTimeout) // 如果当前连接池里的连接数量超过了最小空闲连接数，而同时有连接空闲时间超过了该数值，那么这些连接将会自动被关闭，并从连接池里去掉。时间单位是毫秒
                .setConnectTimeout(connectTimeout) // 同任何节点建立连接时的等待超时。时间单位是毫秒。
                .setTimeout(timeout) // 等待节点回复命令的时间。该时间从命令发送成功时开始计时。
                .setPingTimeout(pingTimeout).
                setReconnectionTimeout(reconnectionTimeout); // 当与某个节点的连接断开时，等待与其重新建立连接的时间间隔。时间单位是毫秒。
        redissonClient = Redisson.create(config);
    }

    /**
     * 获取Redisson的实例对象
     *
     * @return
     */
    public Redisson getRedisson() {
        return (Redisson) redissonClient;
    }
}
